From 10bba1f0cd480a6fb224dde1b97f539d90978994 Mon Sep 17 00:00:00 2001 From: robertl Date: Wed, 2 Nov 2005 15:57:00 +0000 Subject: [PATCH] Start sketching in Forerunner lap handling to help Cutter Brown. git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@1527 f51c46e8-681c-474f-0cfe-069cfd0219fb --- gpsbabel/jeeps/gps.h | 14 +++++++++++ gpsbabel/jeeps/gpsapp.c | 50 ++++++++++++++++++++++++++++++++++++++-- gpsbabel/jeeps/gpsprot.h | 6 +++++ 3 files changed, 68 insertions(+), 2 deletions(-) diff --git a/gpsbabel/jeeps/gps.h b/gpsbabel/jeeps/gps.h index b1de25c0e..327b4e565 100644 --- a/gpsbabel/jeeps/gps.h +++ b/gpsbabel/jeeps/gps.h @@ -155,6 +155,20 @@ typedef struct GPS_SWay time_t Time; /* Unix time */ } GPS_OWay, *GPS_PWay; +/* + * Forerunner Lap data. + */ +typedef struct GPS_SLap_Data { + time_t start_time; + uint32 total_time; /* Hundredths of a second */ + float total_distance; /* In meters */ + double begin_lat; + double begin_lon; + double end_lat; + double end_lon; + int16 calories; + UC track_index; +} GPS_OLap_Data, *GPS_PLap_Data; diff --git a/gpsbabel/jeeps/gpsapp.c b/gpsbabel/jeeps/gpsapp.c index 99030d405..1f387fa6f 100644 --- a/gpsbabel/jeeps/gpsapp.c +++ b/gpsbabel/jeeps/gpsapp.c @@ -606,8 +606,11 @@ static void GPS_A001(GPS_PPacket packet) */ continue; } - - + else if (lasta < 1000) + { + if (data == 906) + gps_lap_type = pD906; + } } } @@ -5838,6 +5841,49 @@ void GPS_D800_Get(GPS_PPacket packet, GPS_PPvt_Data *pvt) return; } +/* @func GPS_D906_Get ****************************************************** +** +** Convert packet to lap structure +** +** @param [r] packet [GPS_PPacket] packet +** @param [w] pvt [GPS_PLap_Data *] lap structure +** +** @return [void] +************************************************************************/ +void GPS_D906_Get(GPS_PPacket packet, GPS_PLap_Data *Lap) +{ + UC *p; + uint32 t; + + p = packet->data; + + t = GPS_Util_Get_Uint(p); + (*Lap)->start_time = GPS_Math_Gtime_To_Utime((time_t)t); + p+=sizeof(uint32); + + (*Lap)->total_time = GPS_Util_Get_Int(p); + p+=sizeof(int32); + + (*Lap)->total_distance = GPS_Util_Get_Float(p); + p+=sizeof(float); + + + (*Lap)->begin_lat = GPS_Math_Semi_To_Deg(GPS_Util_Get_Int(p)); + p+=sizeof(int32); + (*Lap)->begin_lon = GPS_Math_Semi_To_Deg(GPS_Util_Get_Int(p)); + p+=sizeof(int32); + (*Lap)->end_lat = GPS_Math_Semi_To_Deg(GPS_Util_Get_Int(p)); + p+=sizeof(int32); + (*Lap)->end_lon = GPS_Math_Semi_To_Deg(GPS_Util_Get_Int(p)); + p+=sizeof(int32); + + (*Lap)->calories = GPS_Util_Get_Short(p); + p+=sizeof(int16); + + (*Lap)->track_index = *p++; + + return; +} /* * It's unfortunate that these aren't constant and therefore switchable, diff --git a/gpsbabel/jeeps/gpsprot.h b/gpsbabel/jeeps/gpsprot.h index 1d0eb6a42..f3817a11a 100644 --- a/gpsbabel/jeeps/gpsprot.h +++ b/gpsbabel/jeeps/gpsprot.h @@ -234,6 +234,12 @@ int32 gps_position_type; int32 gps_pvt_type; +/* + * Lap Data Type + */ +#define pD906 906 + +int32 gps_lap_type; /* * Link protocol type -- 2.30.2